package com.sg.dto.base.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @desc QueryProjectListReq
 * @使用场景
 */
@Data
public class QueryProjectListReq extends BaseDto implements Serializable {

    /**
     * 项目ID
     */
    @ApiModelProperty("项目ID")
    private String projectId;

    /**
     * 项目编号
     */
    @ApiModelProperty("项目编号")
    private String projectNumber;

    /**
     * 项目名称
     */
    @ApiModelProperty("项目名称")
    private String projectName;

    /**
     * 是否完成 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否完成")
    private String isComplete;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 实际结束时间
     */
    @ApiModelProperty("实际结束时间")
    private Date actualEndTime;

    /**
     * 计划开始时间
     */
    @ApiModelProperty("计划开始时间")
    private Date planStartTime;

    /**
     * 计划结束时间
     */
    @ApiModelProperty("计划结束时间")
    private Date planEndTime;

    /**
     * 来源类型编码
     */
    @ApiModelProperty("来源类型编码")
    private String sourceTypeCode;

    /**
     * 安排主体ID
     */
    @ApiModelProperty("安排主体ID")
    private String arrangeSubjectId;

    /**
     * 接收部门ID
     */
    @ApiModelProperty("接收部门ID")
    private String receiveSubjectId;

    /**
     * 归属对象ID
     */
    @ApiModelProperty("归属对象ID")
    private String coordObjectId;

    /**
     * 业务应用标识
     */
    @ApiModelProperty("业务应用标识")
    private String bizAppCode;

    /**
     * 项目进展状态 NOT_AT_THE:未开始 ONGOING:进行中 OVERDUE:已逾期 HAS_ENDED:已结束
     */
    @ApiModelProperty("项目进展状态")
    private String taskStatus;

    /**
     * 是否逾期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否逾期")
    private String isOverdue;

    /**
     * 是否存档 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否存档")
    private String isArchive;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;

    /**
     * 是否作废 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否作废不能为空")
    @ApiModelProperty("是否作废")
    private String isValid;

    /**
     * 创建于空间ID
     */
    @ApiModelProperty("创建于空间ID")
    private String spaceId;

}
